package com.wenx.v3system.modular.cloud.service;

import com.wenx.v3core.response.R;

/**
 * 系统用户远程服务接口
 * 基于Enhanced RBAC权限模型
 * 提供用户认证信息和权限查询服务，支持多种查询方式和缓存优化
 * 
 * @author wenx
 * @since 1.0.0
 */
public interface SysUserRemoteService {

    /**
     * 根据标识符获取用户认证信息
     * 自动识别并按优先级查询：账户名 > 用户名 > 邮箱 > 手机号
     * 
     * @param identifier 用户标识符（可以是用户名、邮箱、手机号等）
     * @return 用户认证信息
     */
    R getUserAuthInfo(String identifier);

    /**
     * 根据用户名获取用户认证信息
     * 
     * @param username 用户名
     * @return 用户认证信息
     */
    R getUserAuthInfoByUsername(String username);

    /**
     * 根据账户名获取用户认证信息
     * 支持用户名、邮箱、手机号等多种方式
     * 
     * @param account 账户标识
     * @return 用户认证信息
     */
    R getUserAuthInfoByAccount(String account);

    /**
     * 根据邮箱获取用户认证信息
     * 
     * @param email 邮箱地址
     * @return 用户认证信息
     */
    R getUserAuthInfoByEmail(String email);

    /**
     * 根据手机号获取用户认证信息
     * 
     * @param phone 手机号
     * @return 用户认证信息
     */
    R getUserAuthInfoByPhone(String phone);

    /**
     * 获取用户的所有权限标识
     * 
     * @param userId 用户ID
     * @return 权限标识集合
     */
    R getUserPermissions(Long userId);

    /**
     * 获取用户的所有角色ID
     * 
     * @param userId 用户ID
     * @return 角色ID集合
     */
    R getUserRoles(Long userId);

    /**
     * 验证用户账户状态
     * 
     * @param userId 用户ID
     * @return 账户状态信息
     */
    R isAccountActive(Long userId);
}